// src/utils/likeCheckWorker.js
// 模拟 Axios 的 withCredentials: true，跨域携带 Cookie
self.onmessage = async (e) => {
  const { userId, videoIds, baseApiUrl } = e.data;
  try {
    // 并行发起所有请求（核心优化：替换串行循环）
    const requestPromises = videoIds.map(videoId => {
      // 复用你的接口路径：和 isLikedVideoAPI 完全一致
      const url = `${baseApiUrl}/user/${userId}/isLiked/${videoId}`;
      return fetch(url, {
        method: 'GET', // 你的接口是 GET 方法
        credentials: 'include', // 关键：跨域携带 Cookie（对应 Axios 的 withCredentials: true）
        headers: {
          'Content-Type': 'application/json' // 保持和 Axios 一致的请求头
        }
      }).then(res => {
        if (!res.ok) throw new Error(`请求失败: ${res.status}`);
        return res.json(); // 接口返回的 data（和 Axios 响应格式一致）
      });
    });

    // 等待所有请求完成（成功/失败都不中断）
    const results = await Promise.allSettled(requestPromises);

    // 整理结果：返回 { videoId, isLiked } 给主线程
    const likeResults = videoIds.map((videoId, index) => ({
      videoId,
      isLiked: results[index].status === 'fulfilled' ? results[index].value : false
    }));

    self.postMessage({ type: 'success', likeResults });
  } catch (err) {
    self.postMessage({ type: 'error', message: err.message });
  }
};